package com.itjiange;

/**
 * 备忘录模式：在不破坏封装性的前提下，捕获一个对象的内部状态，并在该对象之外保存这个
 * 状态，这样以后就可以将该对象恢复到原先保存的状态。当你需要让对象返回之前的状
 * 态时（例如：你的用户请求“撤销”），就使用备忘录模式。
 *
 * @author ItJianGe
 * @data 2024/8/28 9:23
 */
public class MementoMain {
    public static void main(String[] args) {
        Document document = new Document("a");
        MementoManager mementoManager = new MementoManager();

        // 保存到备忘录
        mementoManager.save(document);
        document.printContext();

        document.setContext("b");
        mementoManager.save(document);
        document.printContext();

        document.setContext("c");
        document.printContext();

        System.out.println("-------------进行第一次撤销------------");
        mementoManager.annul(document);
        document.printContext();

        System.out.println("-------------进行第二次撤销------------");
        mementoManager.annul(document);
        document.printContext();
    }
}